﻿
Imports System.Data
Imports System.Data.Odbc

Module dataGrupoDeGastos
    Private dtGrupoG As New DataTable

    Dim dID As Integer
    Dim dNom As String
    Dim dValor As Integer


    Sub ActualizaValoresDeGrupos()
        conectar()

        cmd = New OdbcCommand("SELECT tGruposDeGastos.ID,tGruposDeGastos.Nombre, SUM(tconceptosdegastos.Valor)FROM tGruposDeGastos, tconceptosdegastos WHERE tGruposDeGastos.ID = tconceptosdegastos.IDGruposDeGastos  Group BY tconceptosdegastos.IDGruposDeGastos", con)
        dr = cmd.ExecuteReader
        While dr.Read
            dID = CInt(dr.Item(0).ToString)
            dNom = dr.Item(1).ToString
            dValor = CInt(dr.Item(2).ToString)
            actualizaGrupoGastos(dID, dNom, dValor)
        End While
        dr.Close()

        desconectar()

    End Sub

    Sub actualizaGrupoGastos(ByVal vID As Integer, ByVal vNombre As String, ByVal vTotal As Integer)

        conectar()

        cmd = New OdbcCommand("UPDATE tgruposdegastos set Nombre='" + vNombre + "',Total='" & vTotal & "' WHERE ID= '" & vID & "'", con)
        cmd.ExecuteNonQuery()

        desconectar()
    End Sub


    Sub listaGruposDeGastos()

        conectar()
        dtGrupoG.Clear()

        cmd.Connection = con
        cmd.CommandText = "SELECT * FROM tGruposDeGastos "
        cmd.CommandType = CommandType.Text
        da.SelectCommand = cmd

        da.Fill(dtGrupoG)


        With frmGruposDeGastos.DGV_Grupos
            .DefaultCellStyle.Font = New Font("Verdana", 10)
            .AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells
            .AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells
            .ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
            .DataSource = dtGrupoG
            .AlternatingRowsDefaultCellStyle.BackColor = Color.AntiqueWhite

            .Columns(0).ReadOnly = True
            .Columns(0).HeaderText = "Código"
            .Columns(1).HeaderText = "Nombre"
            .Columns(2).ReadOnly = True
            .Columns(2).HeaderText = "Total"
            .Refresh()



        End With




        desconectar()


    End Sub


    Sub actualizaValorGrupo()
        With frmGruposDeGastos.DGV_Grupos

            Dim valID As Integer
            Dim valNombre As String
            Dim valValor As Integer

            For i = 0 To frmGruposDeGastos.DGV_Grupos.Rows.Count - 2

                valID = .Item(0, i).Value
                valNombre = .Item(1, i).Value
                valValor = .Item(2, i).Value

                actualizaGrupoGastos(valID, valNombre, valValor)

            Next




        End With
    End Sub


    Sub ingresaGruposDeGastos(ByVal vNom As String)

        conectar()
        cmd = New OdbcCommand("INSERT INTO tgruposdegastos (Nombre, Total) Values('" + vNom + "',0)", con)

        If cmd.ExecuteNonQuery Then
            listaGruposDeGastos()
            '
        Else
            MessageBox.Show(msjNoIngresar, msjTituloModal, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End If

        desconectar()
    End Sub

    Sub eliminaGruposDeGastos(ByVal vID As Integer, ByVal vValor As Integer)
        conectar()
        If vValor = 0 Then
            cmd = New OdbcCommand("DELETE  FROM  tgruposdegastos WHERE ID = '" & vID & "'", con)
        Else
            cmd = New OdbcCommand("DELETE tgruposdegastos, tconceptosdegastos FROM  tgruposdegastos JOIN tconceptosdegastos ON tgruposdegastos.ID = tconceptosdegastos.IDGruposDeGastos WHERE tgruposdegastos.ID = '" & vID & "'", con)

        End If
        
        If cmd.ExecuteNonQuery Then
            listaGruposDeGastos()
            ActualizaValoresDeGrupos()
        Else
            MessageBox.Show(msjNoEliminar, msjTituloModal, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
        desconectar()


    End Sub

    Sub actualizaGruposDeGastos(ByVal vID As Integer, ByVal vNom As String, ByVal vValor As Integer)

        conectar()
        cmd = New OdbcCommand("UPDATE tconceptosdegastos set Nombre='" + vNom + "',Valor='" & vValor & "' WHERE ID = '" & vID & "'", con)

        If cmd.ExecuteNonQuery Then
            listaGruposDeGastos()
            ActualizaValoresDeGrupos()
        Else
            MessageBox.Show(msjNoActualizar, msjTituloModal, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
        desconectar()


    End Sub
    
End Module
